home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / Pacific C for DOS / INCLUDE / HITECH.H < prev    next >
Text File  |  1995-03-08  |  3KB  |  120 lines

  1. /*    Standard types for HI-TECH Software code
  2.     These types may need to be tuned for different
  3.     machines/compilers. Notes with each one indicate assumptions
  4.     that should be maintained for each type.
  5.  */
  6.  
  7. /*
  8.  *    $Header: /home/clyde/nz/RCS/hitech.h,v 1.8 94/04/27 13:39:06 clyde Exp $
  9.  *
  10.  *    $Log:    hitech.h,v $
  11.  * Revision 1.8  94/04/27  13:39:06  clyde
  12.  * Make FAST explicitly signed
  13.  * 
  14.  * Revision 1.7  93/05/13  00:10:56  clyde
  15.  * Fix #endif's
  16.  * 
  17.  * Revision 1.6  92/06/25  16:15:43  clyde
  18.  * Set LITTLE_ENDIAN for appropriate machines
  19.  * 
  20.  * Revision 1.5  92/06/01  15:05:44  clyde
  21.  * Made setting of BIG_ENDIAN conditional
  22.  * 
  23.  * Revision 1.4  91/07/18  22:57:30  clyde
  24.  * Added conditional setting of LARGE_DATA
  25.  * 
  26.  * Revision 1.3  91/07/08  15:37:16  clyde
  27.  * Added BIG_ENDIAN
  28.  * 
  29.  * Revision 1.2  89/08/09  11:57:10  clyde
  30.  * Added RCS header stuff
  31.  * 
  32.  */
  33.  
  34.  
  35. /*
  36.     Turn ANSI on if the compiler supports function prototypes and
  37.     has the ANSI header files
  38.         <stdlib.h>
  39.         <string.h>
  40.  */
  41.  
  42. #if    HI_TECH_C
  43. #define    ANSI    1
  44. #endif    /* HI_TECH_C */
  45.  
  46. /*    shorthand types */
  47.  
  48. #define    uchar    unsigned char
  49. #define    ulong    unsigned long
  50. #define    ushort    unsigned short
  51.  
  52. /* useful, tuneable types. Change only if:
  53.  
  54.     1) compiler does not support type, e.g. unsigned char.
  55.     2) compiler generates bad code for a particular type.
  56.     3) a larger type would generate faster code, e.g. byte counters
  57.        on the 65816 are inefficient code-wise.
  58.  */
  59.  
  60. #define    BOOL    unsigned char        /* boolean variable. Any integral type
  61.                        will do. */
  62. #define    FAST    signed char        /* fast, small counter. Must permit
  63.                        values -128 to 127 but may be larger. */
  64. #define    UFAST    unsigned char        /* fast, small unsigned counter. Must
  65.                        permit values 0-255 at least */
  66. #define    BYTE    unsigned char        /* sizeof(BYTE) must == 1 */
  67. #define    INT_16    short            /* signed, >= 16 bits */
  68. #define    UINT_16    unsigned short        /* unsigned, >= 16 bits */
  69. #define    INT_32    long            /* signed, >= 32 bits */
  70. #define    UINT_32    unsigned long        /* unsigned, >= 32 bits */
  71.  
  72.  
  73. /*    Register variable selectors; REG1 is for things that must go
  74.     in registers at all costs, REG2 for things that should, REG3 for
  75.     things that could go in registers if there are any left over.
  76.     Ordering of declarations will of course come into it too.
  77.  */
  78.  
  79. #if    z80        /* only has one register variable */
  80. #define    REG1    register
  81. #define    REG2    auto
  82. #define    REG3    auto
  83. #endif    /* z80 */
  84.  
  85. #if    i8086        /* only has two register variable */
  86. #define    REG1    register
  87. #define    REG2    register
  88. #define    REG3    auto
  89. #endif    /* i8086 */
  90.  
  91. #if    i8096 || m68k    /* lots of registers! */
  92. #define    REG1    register
  93. #define    REG2    register
  94. #define    REG3    register
  95. #endif    /* i8096 || m68k */
  96.  
  97. /*
  98.  *    Little endian vs big endian
  99.  *    Not complete by any means.
  100.  */
  101.  
  102. #if     !defined(BIG_ENDIAN) && !defined(LITTLE_ENDIAN)
  103. #if interdata || sparc || sun || m68k || m68000
  104. #define    BIG_ENDIAN    1
  105. #endif
  106.  
  107. #if vax || i8086 || i386 || iAPX286
  108. #undef    BIG_ENDIAN
  109. #define    LITTLE_ENDIAN    1
  110. #endif
  111. #endif
  112.  
  113. /*
  114.  *    Try and identify processors with large data spaces
  115.  */
  116.  
  117. #if    sparc || m68k || m68000 || i386 || i80386 || FLAT_MODEL || vax
  118. #define    LARGE_DATA    1
  119. #endif
  120.